A network interface controller (NIC) (referred to in certain networks as a host bus adapter (HBA) or host channel adapter (HCA)) is a unit which manages the communications between a computer (e.g., a server) and a network, such as a local area network or switch fabric. The NIC directs packets from the network to their destination in the computer, for example by placing the packets in a buffer of a destination application in a memory unit of the computer and directs outgoing packets, for example sending them either to the network or to a loopback port. The directing of packets to their destination is generally referred to as steering, which includes determining a required destination of the packet and forwarding the packet to its destination.
When a physical server supports a plurality of virtual machines (VMs), different approaches are taken by the NIC in directing the packets. In one approach, all packets are directed to a virtual machine monitor (VMM) and the VMM directs the packets to the specific destination virtual machine. This approach, however, increases the load imposed by the VMM on the host CPU.
US patent publication 2008/0189432 to Abali et al. describes a method of adjusting virtual host channel adapter configuration to virtual machine migration.
U.S. Pat. No. 7,286,535 to Ishikawa et al., the disclosure of which is incorporated herein by reference, describes using a content addressable memory (CAM) to implement a lookup table in a packet forwarding device.
U.S. Pat. No. 7,746,854 to Ambe et al., the disclosure of which is incorporated herein by reference, describes a fast flexible filter processor (FFFP) which parses incoming packets based on programmable mask fields and accordingly generates action instructions based on programmable rules.